﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Osiptel.HECO.BE;
using System.Data.OracleClient;
using System.Data;

namespace Osiptel.HECO.DL
{
    public class ParametroDetalleDL
    {
        public List<ParametroDetalleBE> ObtenerParamsById(int idTabla)
        {
            try
            {
                using (OracleCommand cmd = new OracleCommand())
                {
                    cmd.CommandText = "PKG_HECO_GLOBAL.SP_LISTAR_PARAMS_TABLA";
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.Add("pIdTabla", OracleType.Number).Value = idTabla;
                    cmd.Parameters.Add("oListado", OracleType.Cursor).Direction = ParameterDirection.Output;
                    using (DL_CONEXION NewConexion = new DL_CONEXION())
                    {
                        try
                        {
                            NewConexion.retOpen();
                            cmd.Connection = NewConexion.retConexion();
                            ParametroDetalleBE objParametroDetBE;
                            List<ParametroDetalleBE> listaParametroDet = new List<ParametroDetalleBE>();
                            using (OracleDataReader objDRParametroDet = cmd.ExecuteReader())
                            {
                                while (objDRParametroDet.Read())
                                {
                                    objParametroDetBE = new ParametroDetalleBE();
                                    objParametroDetBE.IdParametro = Convert.ToInt32(objDRParametroDet["IDPARAMETRO"]);
                                    objParametroDetBE.Nombre = Convert.ToString(objDRParametroDet["NOMBRE"]);
                                    objParametroDetBE.ValorNumber = Convert.ToInt32(objDRParametroDet["VALORNUMBER"]);
                                    objParametroDetBE.ValorChar = Convert.ToString(objDRParametroDet["VALORCHAR"]);
                                    objParametroDetBE.ValorVarchar1 = Convert.ToString(objDRParametroDet["VALORVARCHAR1"]);
                                    objParametroDetBE.ValorVarchar2 = Convert.ToString(objDRParametroDet["VALORVARCHAR2"]);
                                    listaParametroDet.Add(objParametroDetBE);
                                }
                                objDRParametroDet.Close();
                            }
                            NewConexion.retClose();
                            return listaParametroDet;
                        }
                        catch (Exception ex)
                        {
                            string error = ex.ToString();
                            List<ParametroDetalleBE> listaParametroDet = new List<ParametroDetalleBE>();
                            return listaParametroDet;
                        }
                        finally
                        {
                            if (NewConexion.conexion.State == ConnectionState.Open) NewConexion.retClose();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public List<ParametroDetalleBE> ObtenerClaseByTipoSubTipo(int tipo, int subTipo)
        {
            try
            {
                using (OracleCommand cmd = new OracleCommand())
                {
                    cmd.CommandText = "PKG_HECO_GLOBAL.SP_LISTAR_CLASE_TIPOSUBTIPO";
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.Add("pIdTipo", OracleType.Number).Value = tipo;
                    cmd.Parameters.Add("pIdSubTipo", OracleType.Number).Value = subTipo;
                    cmd.Parameters.Add("oListado", OracleType.Cursor).Direction = ParameterDirection.Output;
                    using (DL_CONEXION NewConexion = new DL_CONEXION())
                    {
                        try
                        {
                            NewConexion.retOpen();
                            cmd.Connection = NewConexion.retConexion();
                            ParametroDetalleBE objParametroDetBE;
                            List<ParametroDetalleBE> listaParametroDet = new List<ParametroDetalleBE>();
                            using (OracleDataReader objDRParametroDet = cmd.ExecuteReader())
                            {
                                while (objDRParametroDet.Read())
                                {
                                    objParametroDetBE = new ParametroDetalleBE();
                                    objParametroDetBE.IdParametro = Convert.ToInt32(objDRParametroDet["IDPARAMETRO"]);
                                    objParametroDetBE.Nombre = Convert.ToString(objDRParametroDet["NOMBRE"]);
                                    listaParametroDet.Add(objParametroDetBE);
                                }
                                objDRParametroDet.Close();
                            }
                            NewConexion.retClose();
                            return listaParametroDet;
                        }
                        catch (Exception ex)
                        {
                            string error = ex.ToString();
                            List<ParametroDetalleBE> listaParametroDet = new List<ParametroDetalleBE>();
                            return listaParametroDet;
                        }
                        finally
                        {
                            if (NewConexion.conexion.State == ConnectionState.Open) NewConexion.retClose();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
}
